/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package woowcrawler;

import java.sql.*;

/**
 *
 * @author Heitor
 */
public class DBManager {

    String driver = "com.mysql.jdbc.Driver";
    String stringConexao = "jdbc:mysql://localhost:3306/woowgroup";
    String usuario = "root";
    String senha = "123456";

    public ResultSet getAutores() {
        ResultSet rs = null;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            rs = comando.executeQuery("select * from autor;");
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return rs;
    }

    public ResultSet getAutorByNomeArtigo(String nome) {
        ResultSet rs = null;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            rs = comando.executeQuery("SELECT autor.* FROM autor "
                    + "INNER JOIN descricaogeralautor ON autor.ID = descricaogeralautor.IdAutor "
                    + "INNER JOIN descricaogeral ON descricaogeralautor.IdDescricaoGeral = descricaogeral.ID "
                    + "WHERE descricaogeral.NomeArtigo = " + nome + ";");
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return rs;
    }

    public int insertAutor(String nome) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into autor(nome) values('" + nome + "');");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public ResultSet getPessoas() {
        ResultSet rs = null;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            rs = comando.executeQuery("select * from pessoa;");
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return rs;
    }

    public int insertPessoa(String nome) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into pessoa(nome) values('" + nome + "');");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public ResultSet getPalavrasChave() {
        ResultSet rs = null;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            rs = comando.executeQuery("select * from palavrachave;");
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return rs;
    }

    public int getIdPalavraChave(String palavraChave) {
        int retorno = 0;

        ResultSet rs = null;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            rs = comando.executeQuery("select id from palavrachave where busca = " + palavraChave + ";");

            retorno = rs.findColumn("ID");

        } catch (Exception ex) {

            System.out.println(ex.getMessage());
        }
        return retorno;
    }

    public ResultSet SelectConsultaByPalavraChave(int idPalavraChave) {
        ResultSet rs = null;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            rs = comando.executeQuery("select * from consulta where palavrachaveid = " + idPalavraChave + ";");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }
        return rs;
    }

    public int insertPalavraChave(String busca) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into autor(nome) values('" + busca + "');");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public ResultSet getRetornos() {
        ResultSet rs = null;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            rs = comando.executeQuery("select * from retorno;");
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return rs;
    }

    public ResultSet getDescricaoGeral() {
        ResultSet rs = null;
        Connection conexao;

        try {
            Class.forName(driver);
            conexao = DriverManager.getConnection(stringConexao, usuario, senha);
            Statement comando = conexao.createStatement();
            rs = comando.executeQuery("select * from descricaogeral;");
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return rs;
    }

    public ResultSet getDescricaoGeralByNomeArtigo(String nome) {
        ResultSet rs = null;
        Connection conexao;

        try {
            Class.forName(driver);
            conexao = DriverManager.getConnection(stringConexao, usuario, senha);
            Statement comando = conexao.createStatement();
            rs = comando.executeQuery("select * from descricaogeral where NomeArtigo = " + nome + ";");
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }
        return rs;
    }

    public int insertRetorno(String url, String nomeartigo, String abstractt, String conteudo) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into autor(url,nomeartigo,abstract,conteudo)"
                    + "values('" + url + "','" + nomeartigo + "','" + abstractt + "','" + conteudo + "');");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public int insertRetornoAutor(int retornoid, int autorid) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into retornoautor(retornaid,autorid)"
                    + "values(" + retornoid + "," + autorid + ");");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public int insertConsulta(int palavrachaveid) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into consulta(palavrachaveid)"
                    + "values(" + palavrachaveid + ");");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public int insertDescricaoGeral(String URL, String nomeArtigo, String Abstract, String conteudo, String ISBN, String pages, int idConsulta) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into descricaogeral(URL, NomeArtigo,Abstract,Conteudo,ISBN,Pages,IdConsulta)"
                    + "values(" + URL + "," + nomeArtigo + "," + Abstract + "," + conteudo + "," + ISBN + "," + pages + "," + idConsulta + ");");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public int insertDescricaoGeralAutor(int idDescricaoGeral, int idAutor) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into descricaogeralautor(IdDescricaoGeral, IdAutor)"
                    + "values(" + idDescricaoGeral + "," + idAutor + ");");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public int insertDescricaoGeralTags(int idDescricaoGeral, int idTag) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into descricaogeraltags(IdDescricaoGeral,IdTag)"
                    + "values(" + idDescricaoGeral + "," + idTag + ");");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public int insertPalavraChave(String busca, String tipoConsulta) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into palavrachave(Busca,TipoConsulta)"
                    + "values(" + busca + "," + tipoConsulta + ");");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public int insertTag(String nomeTag) {
        int r = 0;

        Connection conexao;

        try {
            Class.forName(driver);

            conexao = DriverManager.getConnection(stringConexao, usuario, senha);

            Statement comando = conexao.createStatement();

            r = comando.executeUpdate("insert into tags(NomeTag)"
                    + "values(" + nomeTag + ");");

        } catch (Exception x) {
            System.out.println(x.getMessage());
        }

        return r;
    }

    public ResultSet SelectAutorById(int id) {
        ResultSet r = null;
        Connection conexao;
        try {
            Class.forName(driver);
            conexao = DriverManager.getConnection(stringConexao, usuario, senha);
            Statement comando = conexao.createStatement();
            r = comando.executeQuery("Select * from Autor Where ID = " + id);
        } catch (Exception x) {
            System.out.println(x.getMessage());
        }
        return r;
    }
}
